#ifndef VNAV_QUAD_H
#define VNAV_QUAD_H

#include "implementations/geometry/Polygon.h"

namespace vnav
{
	namespace geometry
	{
		template<typename T> 
		class Quad : public vnav::geometry::Polygon<T>
		{
		public:
			Quad(const T& p1, const T& p2, const T& p3, const T& p4);
			~Quad();
			VNFloat getArea();
			vnav::PolygonType getPolygonType();
		protected:
		private:
			T m_p1;
			T m_p2;
			T m_p3;
			T m_p4;
		};

		template<typename T> 
		Quad<T>::Quad(const T& p1, const T& p2, const T& p3, const T& p4)
		{
			m_vertices.push_back(p1);
			m_vertices.push_back(p2);
			m_vertices.push_back(p3);
			m_vertices.push_back(p4);
		}

		template<typename T> 
		Quad<T>::~Quad()
		{
		}

		template<typename T> 
		VNFloat Quad<T>::getArea()
		{
			// todo
			return 0;
		}

		template<typename T> 
		vnav::PolygonType Quad<T>::getPolygonType()
		{
			return vnav::POLY_TYPE_QUAD;
		}
	}
}

#endif